System.currentTimeMillis()
:計算從1970/1/1 0點0分0秒至現在的毫秒數,常用來計算時間差
JDK8以前的兩個Date相關的類,分別又有繼承的關係
java.util.Date
:superclass
java.sql.Date
:sub class
java.util.Date
:
import java.util.Date
Date date1 = new Date(); // 基於當前系統時間實例化
// 基於某個long類型的值去進行實例化,會計算是在1970/1/1 0點0分0秒後經過的時間
Date date2 = new Date(1223129481L);
System.out.println(date1.toString()); // Thur Oct 24 22:15:30 CST 2024
long milliTimes = date1.getTime();
System.out.println(milliTimes);
// 1234742687L 返回一個從1970/1/1 0點0分0秒到現在毫秒數(數字我是亂打的)
java.util.Date
中有許多方法、構造器都已經是Deprecated(過時)
了
假設今天import
不同package
中,相同名稱的class
時,要使用以下方法(舉例已經使用java.util.Date
了,但是現在要在同一個地方使用java.sql.Date
)
java.sql.Date
:
import java.util.Date
java.sql.Date date1 = new java.sql.Date(1370202256045L); // 這個類需要在構造器中傳入一個毫秒
System.out.println(date1.toString()); // 2013-06-03
SimpleDateFormat
:主要用於將日期時間格式化或是將字串解析為日期,這個類在java.text
裡
import java.text.SimpleDateFormat
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
Date date1 = new Date();
System.out.println(simpleDateFormat.formate(date1)); // 24-10-24 下午10:31
// 沒有使用構造器時,使用parse()方法就只能解析預設格式的字串: 24-10-24 下午10:31
System.out.println(simpleDateFormat.parse("24-10-24 下午10:31")); // Thur Oct 24 22:15:30 CST 2024
// 可以透過不同的字串參數,去改變SimpleDateFormat構造器的格式
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat1.formate(date1));// 2024-10-24 22:31:30
// 有使用構造器去改變顯示日期時間格式時,解析字串就只能使用改變後的格式
System.out.println(simpleDateFormat1.parse("2024-10-24 22:31:30"));
Calendar
類:前面提到Date
很多中很多構造器、方法等都已經Deprected
,有很大一部份是被Calendar
所取代,而Calendar
本身是一個抽象類
,可以透過它的subclass
GregorianCalendar
去進行實例化,或者使用靜態方法getInstance()
去取得GregorianCalendar
的實例
import java.util.Calendar
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass()); // class java.util.GregorianCalendar
Calendar
中有幾個常用的方法
get(int field)
→ calendar.get(Calendar.DAY_OF_MONTH)
:獲取今天是這個月的第幾天set(int field, xx)
→calendar.set(Calendar.DAY_OF_MONTH, xx)
:將DAY_OF_MONTH
這個靜態屬性設置為xx
天add(int field, xx)
→calendar.add(Calendar.DAY_OF_MONTH, xx)
:將DAY_OF_MONTH
這個靜態屬性設置的天數增加xx
天,若要減少天數則直接輸入負數getTime()
→Date date = calendar.getTime();
將calendar
實例轉換成一個Date
的物件setTime()
→Date date = new Date();
calendar.setTime(date);
可以將目前calendar
的日期時間設置為傳入的Date
的日期時間